#include <stdint.h>

//能记录的错误信息的总条数
#define EMR_ERR_MSG_NBR         64
//每条记录扩展信息的字节数
#define EMR_EXT_INFO_LEN        10

//存储设备的起始地址
#define EMR_START_ADDR          512
//存储异常信息所需要的长度
#define EMR_NEED_LEN            (sizeof(T_EMR))

/*============================================
add your ErrCode here
typedef enum{
    
}E_EMR_CODE;
============================================*/

typedef enum{
    E_EMR_ERR = -1,
    E_EMR_OK = 0,
}E_EMR_STATE;

typedef struct{
    uint8_t time[6];                    //6字节 由低->高 年月日时分秒
    uint8_t errCode;                    //错误码
    uint8_t extInfo[EMR_EXT_INFO_LEN];  //附加信息
}T_ErrMsgInfo;

typedef struct{
    uint16_t wPoint;                      //当前写指针
    uint16_t cycle;                       //转过的圈数
    T_ErrMsgInfo errMsg[EMR_ERR_MSG_NBR];
}T_EMR;

E_EMR_STATE api_EMR_Reset(void);
E_EMR_STATE api_EMR_WriteOne(T_ErrMsgInfo *pSrc);
int16_t     api_EMR_ReadN(T_ErrMsgInfo *pDes,uint16_t N,uint16_t desArrSize);
